home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / bluetooth / bnep.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-11-11  |  3.7 KB  |  154 lines

  1. /*
  2.  *
  3.  *  BlueZ - Bluetooth protocol stack for Linux
  4.  *
  5.  *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
  6.  *  Copyright (C) 2002-2008  Marcel Holtmann <marcel@holtmann.org>
  7.  *
  8.  *
  9.  *  This program is free software; you can redistribute it and/or modify
  10.  *  it under the terms of the GNU General Public License as published by
  11.  *  the Free Software Foundation; either version 2 of the License, or
  12.  *  (at your option) any later version.
  13.  *
  14.  *  This program is distributed in the hope that it will be useful,
  15.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  *  GNU General Public License for more details.
  18.  *
  19.  *  You should have received a copy of the GNU General Public License
  20.  *  along with this program; if not, write to the Free Software
  21.  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  22.  *
  23.  */
  24.  
  25. #ifndef __BNEP_H
  26. #define __BNEP_H
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32. #include <bluetooth/bluetooth.h>
  33.  
  34. #ifndef ETH_ALEN
  35. #define ETH_ALEN    6        /* from <net/ethernet.h> */
  36. #endif
  37.  
  38. /* BNEP UUIDs */
  39. #define BNEP_BASE_UUID 0x0000000000001000800000805F9B34FB
  40. #define BNEP_UUID16    0x02
  41. #define BNEP_UUID32    0x04
  42. #define BNEP_UUID128   0x16
  43.  
  44. #define BNEP_SVC_PANU  0x1115
  45. #define BNEP_SVC_NAP   0x1116
  46. #define BNEP_SVC_GN    0x1117
  47.  
  48. /* BNEP packet types */
  49. #define BNEP_GENERAL               0x00
  50. #define BNEP_CONTROL               0x01
  51. #define BNEP_COMPRESSED            0x02
  52. #define BNEP_COMPRESSED_SRC_ONLY   0x03
  53. #define BNEP_COMPRESSED_DST_ONLY   0x04
  54.  
  55. /* BNEP control types */
  56. #define BNEP_CMD_NOT_UNDERSTOOD    0x00
  57. #define BNEP_SETUP_CONN_REQ        0x01
  58. #define BNEP_SETUP_CONN_RSP        0x02
  59. #define BNEP_FILTER_NET_TYPE_SET   0x03
  60. #define BNEP_FILTER_NET_TYPE_RSP   0x04
  61. #define BNEP_FILTER_MULT_ADDR_SET  0x05
  62. #define BNEP_FILTER_MULT_ADDR_RSP  0x06
  63.  
  64. /* BNEP response messages */
  65. #define BNEP_SUCCESS               0x00
  66.  
  67. #define BNEP_CONN_INVALID_DST      0x01
  68. #define BNEP_CONN_INVALID_SRC      0x02
  69. #define BNEP_CONN_INVALID_SVC      0x03
  70. #define BNEP_CONN_NOT_ALLOWED      0x04
  71.  
  72. #define BNEP_FILTER_UNSUPPORTED_REQ    0x01
  73. #define BNEP_FILTER_INVALID_RANGE      0x02
  74. #define BNEP_FILTER_INVALID_MCADDR     0x02
  75. #define BNEP_FILTER_LIMIT_REACHED      0x03
  76. #define BNEP_FILTER_DENIED_SECURITY    0x04
  77.  
  78. /* L2CAP settings */
  79. #define BNEP_MTU         1691
  80. #define BNEP_FLUSH_TO    0xffff
  81. #define BNEP_CONNECT_TO  15
  82. #define BNEP_FILTER_TO   15
  83.  
  84. #ifndef BNEP_PSM
  85. #define BNEP_PSM     0x0f
  86. #endif
  87.  
  88. /* BNEP headers */
  89. #define BNEP_TYPE_MASK     0x7f
  90. #define BNEP_EXT_HEADER     0x80
  91.  
  92. struct bnep_setup_conn_req {
  93.     uint8_t  type;
  94.     uint8_t  ctrl;
  95.     uint8_t  uuid_size;
  96.     uint8_t  service[0];
  97. } __attribute__((packed));
  98.  
  99. struct bnep_set_filter_req {
  100.     uint8_t  type;
  101.     uint8_t  ctrl;
  102.     uint16_t len;
  103.     uint8_t  list[0];
  104. } __attribute__((packed));
  105.  
  106. struct bnep_control_rsp {
  107.     uint8_t  type;
  108.     uint8_t  ctrl;
  109.     uint16_t resp;
  110. } __attribute__((packed));
  111.  
  112. struct bnep_ext_hdr {
  113.     uint8_t  type;
  114.     uint8_t  len;
  115.     uint8_t  data[0];
  116. } __attribute__((packed));
  117.  
  118. /* BNEP ioctl defines */
  119. #define BNEPCONNADD    _IOW('B', 200, int)
  120. #define BNEPCONNDEL    _IOW('B', 201, int)
  121. #define BNEPGETCONNLIST    _IOR('B', 210, int)
  122. #define BNEPGETCONNINFO    _IOR('B', 211, int)
  123.  
  124. struct bnep_connadd_req {
  125.     int      sock;        /* Connected socket */
  126.     uint32_t flags;
  127.     uint16_t role;
  128.     char     device[16];    /* Name of the Ethernet device */
  129. };
  130.  
  131. struct bnep_conndel_req {
  132.     uint32_t flags;
  133.     uint8_t  dst[ETH_ALEN];
  134. };
  135.  
  136. struct bnep_conninfo {
  137.     uint32_t flags;
  138.     uint16_t role;
  139.     uint16_t state;
  140.     uint8_t  dst[ETH_ALEN];
  141.     char     device[16];
  142. };
  143.  
  144. struct bnep_connlist_req {
  145.     uint32_t cnum;
  146.     struct bnep_conninfo *ci;
  147. };
  148.  
  149. #ifdef __cplusplus
  150. }
  151. #endif
  152.  
  153. #endif /* __BNEP_H */
  154.